!function(e){"function"==typeof define&&define.amd?define(["jquery"],e):e(jQuery)}((function(e){function t(s,i){var n=function(){};n={autoSelectFirst:!1,appendTo:"body",serviceUrl:null,lookup:null,onSelect:null,width:"auto",minChars:1,maxHeight:300,deferRequestBy:0,params:{},formatResult:t.formatResult,delimiter:null,zIndex:9999,type:"GET",noCache:!1,onSearchStart:n,onSearchComplete:n,containerClass:"autocomplete-suggestions",tabDisabled:!1,dataType:"text",lookupFilter:function(e,t,s){return-1!==e.value.toLowerCase().indexOf(s)},paramName:"query",transformResult:function(t){return"string"==typeof t?e.parseJSON(t):t}};this.element=s,this.el=e(s),this.suggestions=[],this.badQueries=[],this.selectedIndex=-1,this.currentValue=this.element.value,this.intervalId=0,this.cachedResponse=[],this.onChange=this.onChangeInterval=null,this.isLocal=this.ignoreValueChange=!1,this.suggestionsContainer=null,this.options=e.extend({},n,i),this.classes={selected:"autocomplete-selected",suggestion:"autocomplete-suggestion"},this.initialize(),this.setOptions(i)}var s={extend:function(t,s){return e.extend(t,s)},createNode:function(e){var t=document.createElement("div");return t.innerHTML=e,t.firstChild}};t.utils=s,e.Autocomplete=t,t.formatResult=function(e,t){var s="("+t.replace(RegExp("(\\/|\\.|\\*|\\+|\\?|\\||\\(|\\)|\\[|\\]|\\{|\\}|\\\\)","g"),"\\$1")+")";return e.value.replace(RegExp(s,"gi"),"$1")},t.prototype={killerFn:null,initialize:function(){var s,i=this,n="."+i.classes.suggestion,o=i.classes.selected,l=i.options;i.element.setAttribute("autocomplete","off"),i.killerFn=function(t){0===e(t.target).closest("."+i.options.containerClass).length&&(i.killSuggestions(),i.disableKillerFn())},l.width&&"auto"!==l.width||(l.width=i.el.outerWidth()),i.suggestionsContainer=t.utils.createNode('
'),(s=e(i.suggestionsContainer)).appendTo(l.appendTo).width(l.width),s.on("mouseover.autocomplete",n,(function(){i.activate(e(this).data("index"))})),s.on("mouseout.autocomplete",(function(){i.selectedIndex=-1,s.children("."+o).removeClass(o)})),s.on("click.autocomplete",n,(function(){i.select(e(this).data("index"),!1)})),i.fixPosition(),window.opera?i.el.on("keypress.autocomplete",(function(e){i.onKeyPress(e)})):i.el.on("keydown.autocomplete",(function(e){i.onKeyPress(e)})),i.el.on("keyup.autocomplete",(function(e){i.onKeyUp(e)})),i.el.on("blur.autocomplete",(function(){i.onBlur()})),i.el.on("focus.autocomplete",(function(){i.fixPosition()}))},onBlur:function(){this.enableKillerFn()},setOptions:function(t){var i=this.options;s.extend(i,t),(this.isLocal=e.isArray(i.lookup))&&(i.lookup=this.verifySuggestionsFormat(i.lookup)),e(this.suggestionsContainer).css({"max-height":i.maxHeight+"px",width:i.width+"px","z-index":i.zIndex})},clearCache:function(){this.cachedResponse=[],this.badQueries=[]},clear:function(){this.clearCache(),this.currentValue=null,this.suggestions=[]},disable:function(){this.disabled=!0},enable:function(){this.disabled=!1},fixPosition:function(){var t;"body"===this.options.appendTo&&(t=this.el.offset(),e(this.suggestionsContainer).css({top:t.top+this.el.outerHeight()+"px",left:t.left+"px"}))},enableKillerFn:function(){e(document).on("click.autocomplete",this.killerFn)},disableKillerFn:function(){e(document).off("click.autocomplete",this.killerFn)},killSuggestions:function(){var e=this;e.stopKillSuggestions(),e.intervalId=window.setInterval((function(){e.hide(),e.stopKillSuggestions()}),300)},stopKillSuggestions:function(){window.clearInterval(this.intervalId)},onKeyPress:function(e){if(this.disabled||this.visible||40!==e.keyCode||!this.currentValue){if(!this.disabled&&this.visible){switch(e.keyCode){case 27:this.el.val(this.currentValue),this.hide();break;case 9:case 13:if(-1===this.selectedIndex)return void this.hide();if(this.select(this.selectedIndex,13===e.keyCode),9===e.keyCode&&!1===this.options.tabDisabled)return;break;case 38:this.moveUp();break;case 40:this.moveDown();break;default:return}e.stopImmediatePropagation(),e.preventDefault()}}else this.suggest()},onKeyUp:function(e){var t=this;if(!t.disabled){switch(e.keyCode){case 38:case 40:return}clearInterval(t.onChangeInterval),t.currentValue!==t.el.val()&&(0